import libnum
import gmpy2
import random
import uuid
import os
flag = "flag{" + str(uuid.uuid4()) + "}"
m = libnum.s2n(flag.encode())
print(flag)

p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n1 = p * q
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n2 = p * q
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n3 = p * q
while 1:
    e = random.randint(10, 20)
    if gmpy2.is_prime(e):
        print(e)
        break
c1 = pow(m, e, n1)
c2 = pow(m, e, n2)
c3 = pow(m, e, n3)

print("n1=", n1)
print("n2=", n2)
print("n3=", n3)
print("c1=", c1)
print("c2=", c2)
print("c3=", c3)

n1= 24089595859499553099479683864573423160648232079316972908227125069961584585176267038865815174496562684569510508691297553047060284132873988832109831254259545428006871561871551370701313784890517011244631365653055583246839443461232985468177513482052087425653665625922971160816294231821785573975535944367693988519712501385602428031806090491282553274292586556179666623605168382752613054891544160798127333853803340692821006418347197833471274324661715616407938173845931083982353630525524068489961349150468703191186669390688100540873291267927616441445745036694896937382781759072949874360379221056127190853859642999903350957487
n2= 21280839374299676000254409305275895788293125079979000534923829326013651444337179836219706251777258853650764666770511966635028473517266642749252120576476133758686855882428777446549306717219434473847940645107328550306687556173290481992236302624113995151707210735793373575672027125097647247411514342313222892993567038309191708903432471460071687276219213880304095491117533566695640776596026077951449556872488112214018182872274190189201618935544380442599156525785945950857826797255580202701143422764868649250086462370991804510250799884441885921440559909349748387865387187028152398384311648486667078847393228949862765778311
n3= 29282792141847916291751452522527349209078723702020817881255100420616084233652522273063439171720422676457368534766212071530729142527376117550627810239167607271634297663892797872122091680871207520144656414671081511049738151231593734752244817152153728286246891897835611986772223731619938960599840353153372553147351869759472384086089726075049054872070934500726421578681239909030151544492789347548313300876349515135015060563336314918688683578540807416778292920098383445589243321186343307422020842749220048310500225753076822930886022798559110314856876429535313804015073539297276142165058267848769003829695111412616729681477
c1= 2007598583943607363495349763083426729386305998318381623951504490725197581148098832224102669727844030274761227429362965314346070528835704453112114997884134126126383841564541536451998307927347392129180928330270002852581857437877519820737804452058271089819985898826129731747599332250675064727010497180820450567412690220901237516595852572346745879573665228475159872088039934485982091323834218183027113045539325414123357430600708503414622001291555995586824016343693032888380125029772507326842294221810304504681463384719093376047987724643550372079123999128193501426415176484057264753817743326436905339046226653144675980952
c2= 13998710107230526846492105291742095563446830279031594665384137044864089834512440190331344862539187795202274392652890427191121024505134256884109874004689135219443410455660506408194449794259697945557124569855542073458935831868144907948884926946774597980090805433812838398440985432859492522749736747926806904064645435302839489478062395060298192980938329834330826947123124489141867632389337164786670667409431070442256783971226503109403470989238974264814270442952022267714901000965728599438366802365350711476799317001219078888648775234978121020169286341331569453990771696925909649766990637069830219022297747506526766978418
c3= 23604176556228308501243464135300300704391381010571120207135268383110451536659775949879670596998043447973138283254935173962254470386510780445461132044950408679014672014783382156525347207464356760111883982508107777989405168875480727859584232322895500255495284900174933793492083823597994026113882768575680378478865434382523874632993250996516392981720940677241986610896462255513126781059844058223391988590667079670517292386139345287101835314310107262893459121814591917327096051944392494033584508272337708025759168402138890796680974795258473326996535568713613790958656738535183220570053790877542879947461207302674048092097
